﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades.Catalogo;
using Control.Catalogo;
using Entidades.General;

namespace SICOIA.UserControls.Afectados
{
    public partial class ucPrediosAfectados : System.Web.UI.UserControl
    {
        #region Controles
        EntUsuario usuario = new EntUsuario();
        CtrlPredio controlPredio = new CtrlPredio();
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if ((EntUsuario)Session["UserPemex"] == null)
                Response.Write("<script>parent.window.open('../Marcos/EndPEMEX.aspx','_top')</script>");
            else
                usuario = (EntUsuario)Session["UserPemex"];

            if (!Page.IsPostBack)
            {
                HddAccion.Value = (Request.Params["accion"] != null ? Request.Params["accion"].ToString() : "nuevo");

                LlenarCombos();
                this.cmbLocalidad.Items.Clear();
                this.cmbLocalidad.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));

                if (HddAccion.Value == "nuevo")
                {

                }
                else if (HddAccion.Value == "editar")
                {
                    HddCvePredio.Value = Request.Params["CvePredio"].ToString();
                    HddCveAfectado.Value = Request.Params["CveAfectado"].ToString();
                    GetPredio();
                }
            }
        }

        #region Base De Datos

        private void GetPredio()
        {
            try
            {
                EntPredio predio = new EntPredio();
                predio.CvePredio = int.Parse(HddCvePredio.Value);
                predio.CveAfectado = int.Parse(HddCveAfectado.Value);

                predio = controlPredio.Obtener(predio);

                if (predio != null)
                {
                    HddAccion.Value = "editar";
                    HddCvePredio.Value = predio.CvePredio.ToString();
                    HddCveAfectado.Value = predio.CveAfectado.ToString();
                    txtNombre.Text = predio.Afectado.Nombre;
                    txtPaterno.Text = predio.Afectado.Paterno;
                    txtMaterno.Text = predio.Afectado.Materno;
                    txtRfc.Text = predio.Afectado.RFC;
                    txtIfe.Text = predio.Afectado.ClaveElector;

                    txtReferencia.Text = predio.Referencia;
                    cmbMunicipio.SelectedIndex = cmbMunicipio.Items.IndexOf(cmbMunicipio.Items.FindByValue(predio.CveMunicipio.ToString()));

                    HddCveLocalidad.Value = predio.CveLocalidad.ToString();
                    cmbMunicipio_SelectedIndexChanged(null,null);

                    if (predio.Afectado.Sexo == "M")
                        rdbSexo.Items[0].Selected = true;
                    if (predio.Afectado.Sexo == "F")
                        rdbSexo.Items[1].Selected = true;

                    txtSuperficie.Text = predio.Superficie;
                    txtNoPredio.Text = predio.NoPredio;
                    txtDenominado.Text = predio.Denominado;
                    txtColindanciaN.Text = predio.Norte;
                    txtColindanciaE.Text = predio.Este;
                    txtColindanciaS.Text = predio.Sur;
                    txtColindanciaO.Text = predio.Oeste;
                    txtNoAcreditado.Text = predio.NoAcreditado;
                    cmbTipoAcreditacion.SelectedIndex = cmbTipoAcreditacion.Items.IndexOf(cmbTipoAcreditacion.Items.FindByValue(predio.CveTipoAcreditacion.ToString()));
                    txtEscritura.Text = predio.NoEscritura;
                    txtNoNotaria.Text = predio.NoNotaria;
                    txtVolumen.Text = predio.Volumen;
                    txtNotario.Text = predio.NoNotario;
                    txtFechaAcreditado.Text = predio.FechaAcreditado;

                    cmbAcreditado.SelectedIndex = cmbAcreditado.Items.IndexOf(cmbAcreditado.Items.FindByValue(predio.Acreditado.ToString()));
                }
            }
            catch (Exception ex)
            {
                lblMensajes.Text = ex.Message;
                popupMensajes.Show();
            }

        }

        #endregion

        #region Eventos Toolbar

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Limpiar();
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                EntPredio predio = new EntPredio();
                predio.CvePredio = int.Parse(HddCvePredio.Value);
                predio.Afectado = new EntPersonas() { Nombre = txtNombre.Text, Paterno = txtPaterno.Text, Materno = txtMaterno.Text, RFC = txtRfc.Text, CveAfectado = int.Parse(HddCveAfectado.Value), ClaveElector = txtIfe.Text, Sexo = rdbSexo.SelectedItem.Value };

                predio.Referencia = txtReferencia.Text;
                predio.CveLocalidad = int.Parse(cmbLocalidad.SelectedItem.Value);
                predio.Superficie = txtSuperficie.Text;
                predio.NoPredio = txtNoPredio.Text;
                predio.Denominado = txtDenominado.Text;
                predio.Norte = txtColindanciaN.Text;
                predio.Este = txtColindanciaE.Text;
                predio.Sur = txtColindanciaS.Text;
                predio.Oeste = txtColindanciaO.Text;
                predio.NoAcreditado = txtNoAcreditado.Text;
                predio.CveTipoAcreditacion = cmbTipoAcreditacion.SelectedItem.Value;
                predio.Acreditado = cmbAcreditado.SelectedItem.Value;
                predio.NoEscritura = txtEscritura.Text;
                predio.NoNotaria = txtNoNotaria.Text;
                predio.Volumen = txtVolumen.Text;
                predio.NoNotario = txtNotario.Text;
                predio.FechaAcreditado = txtFechaAcreditado.Text;

                if (HddAccion.Value.ToString() == "nuevo")
                    predio.Accion = "nuevo";
                else if (HddAccion.Value.ToString() == "editar")
                    predio.Accion = "editar";

                controlPredio.Insertar(predio);

                if (HddAccion.Value.ToString() == "nuevo")
                    lblMensajes.Text = "Se Guardo Correctamente el Predio.";
                else if (HddAccion.Value.ToString() == "editar")
                    lblMensajes.Text = "Se Actualizo Correctamente el Predio.";

                popupMensajes.Show();

                Limpiar();
            }
            catch (Exception ex)
            {
                lblMensajes.Text = ex.Message;
                popupMensajes.Show();
            }
        }

        #endregion

        #region Eventos Combos

        protected void cmbMunicipio_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                CtrlLocalidades controlLocalidades = new CtrlLocalidades();
                List<EntLocalidades> ListaLocalidades = new List<EntLocalidades>();
                ListaLocalidades = (List<EntLocalidades>)controlLocalidades.ObtenerTodos(new EntLocalidades() { CveMunicipio = int.Parse(cmbMunicipio.SelectedValue) }).ConvertAll<EntLocalidades>(delegate(IEntidad enti) { return (EntLocalidades)enti; });

                int indexCombo = 0;
                this.cmbLocalidad.Items.Clear();
                this.cmbLocalidad.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntLocalidades elemento in ListaLocalidades)
                    this.cmbLocalidad.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveLocalidad.ToString(), true));

                if (int.Parse(HddCveLocalidad.Value) > 0)
                {
                    cmbLocalidad.SelectedIndex = cmbLocalidad.Items.IndexOf(cmbLocalidad.Items.FindByValue(HddCveLocalidad.Value.ToString()));
                    HddCveLocalidad.Value = "0";
                }

                UpdatePanelLocalidad.Update();
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        #endregion

        #region "Utilerias"

        private void LlenarCombos()
        {
            try
            {
                CtrlMunicipio controlMunicipio = new CtrlMunicipio();
                List<EntMunicipio> ListaMunicipio = new List<EntMunicipio>();
                ListaMunicipio = (List<EntMunicipio>)controlMunicipio.ObtenerTodos().ConvertAll<EntMunicipio>(delegate(IEntidad enti) { return (EntMunicipio)enti; });

                int indexCombo = 0;
                this.cmbMunicipio.Items.Clear();
                this.cmbMunicipio.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntMunicipio elemento in ListaMunicipio)
                    this.cmbMunicipio.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveMunicipio.ToString(), true));

                CtrlTipoAcreditacion controlTipoAcreditacion = new CtrlTipoAcreditacion();
                List<EntTipoAcreditacion> ListaTipoAcreditacion = new List<EntTipoAcreditacion>();
                ListaTipoAcreditacion = (List<EntTipoAcreditacion>)controlTipoAcreditacion.ObtenerTodos().ConvertAll<EntTipoAcreditacion>(delegate(IEntidad enti) { return (EntTipoAcreditacion)enti; });

                indexCombo = 0;
                this.cmbTipoAcreditacion.Items.Clear();
                this.cmbTipoAcreditacion.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntTipoAcreditacion elemento in ListaTipoAcreditacion)
                    this.cmbTipoAcreditacion.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveTipoAcreditacion.ToString(), true));
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        private void Limpiar()
        {
            try
            {
                HddAccion.Value = "nuevo";
                HddCvePredio.Value = "0";
                HddCveAfectado.Value = "0";
                txtNombre.Text = string.Empty;
                txtPaterno.Text = string.Empty;
                txtMaterno.Text = string.Empty;
                txtRfc.Text = string.Empty;
                txtIfe.Text = string.Empty;

                txtReferencia.Text = string.Empty;
                cmbMunicipio.SelectedIndex = 0;
                cmbLocalidad.Items.Clear();
                this.cmbLocalidad.Items.Clear();
                this.cmbLocalidad.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                txtSuperficie.Text = string.Empty;
                txtNoPredio.Text = string.Empty;
                txtDenominado.Text = string.Empty;
                txtColindanciaN.Text = string.Empty;
                txtColindanciaE.Text = string.Empty;
                txtColindanciaS.Text = string.Empty;
                txtColindanciaO.Text = string.Empty;
                txtNoAcreditado.Text = string.Empty;
                cmbAcreditado.SelectedIndex = 0;
                txtFechaAcreditado.Text = string.Empty;
                cmbTipoAcreditacion.SelectedIndex = 0;
                txtEscritura.Text = string.Empty;
                txtNoNotaria.Text = string.Empty;
                txtVolumen.Text = string.Empty;
                txtNotario.Text = string.Empty;

                rdbSexo.Items[0].Selected = false;
                rdbSexo.Items[1].Selected = false;

                UpdatePanelCuerpo.Update();
                UpdatePanelComboMunicipio.Update();
                UpdatePanelLocalidad.Update();
            }
            catch (Exception ex)
            {
                lblMensajes.Text = ex.Message;
                popupMensajes.Show();
            }
        }

        private void EjecutarScript(string Script)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>";
            msg = msg + Script + "</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", msg, false);
        }

        private void Mensaje(string mensaje)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>alert('";
            msg = msg + mensaje + "');</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", msg, false);
        }

        #endregion

    }
}